package com.itaming.lycheeframework.logging.properties;

import com.itaming.lycheeframework.common.constant.FrameworkConstant;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;

import java.util.ArrayList;
import java.util.List;

/**
 * Logging配置参数
 *
 * @author A.Ming
 */
@ConfigurationProperties(LycheeLoggingProperties.PREFIX)
@Data
public class LycheeLoggingProperties {

    /**
     * 配置前缀
     */
    public static final String PREFIX = FrameworkConstant.PROPERTIES_ROOT_NAME + ".logging";

    /**
     * 请求日志配置参数
     */
    @NestedConfigurationProperty
    private RequestLog request = new RequestLog();

    /**
     * 请求日志配置参数
     */
    @Data
    public static class RequestLog {

        /**
         * 是否启用
         */
        private boolean enabled = true;

        /**
         * 排除路径
         */
        private List<String> excludePath = new ArrayList<>();

        /**
         * 受保护的请求头
         *
         * <p>
         * 输出日志时，会将这些请求头替换成 {@link #protectedHeaderValue} 的值
         */
        private List<String> protectedHeaders = new ArrayList<>();

        /**
         * 受保护请求头的替换值
         */
        private String protectedHeaderValue = "[PROTECTED]";

    }

}
